package com.higgins.client.knowledge;

import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.higgins.client.projectmanagement.ProjectItemDTO;
import com.higgins.server.knowledge.KnowledgeItem;

public interface KnowledgeServiceAsync {
	void retrieveTopLevelKnowledgeItems(AsyncCallback<List<KnowledgeItemDTO>> callback) throws IllegalArgumentException;
	void retrieveKnowledgeItems(String level, Long parentId, AsyncCallback<List<KnowledgeItemDTO>> callback) throws IllegalArgumentException;
	void retrievePreviousKnowledgeItems(Long parentId, AsyncCallback<List<KnowledgeItemDTO>> callback) throws IllegalArgumentException;
	void retrieveRandomKnowledgeItemRelationships(Long parentId, AsyncCallback<List<KnowledgeItemDTO>> callback) throws IllegalArgumentException;
	void retrieveParentIds(Long parentId, AsyncCallback<List<Long>> callback) throws IllegalArgumentException;
	void insetKnowledgeItem(KnowledgeItemDTO item, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void updateKnowledgeItem(KnowledgeItemDTO item, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void deleteKnowledgeItem(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void checkAccess(AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void getKnowledgeItemById(Long id, AsyncCallback<KnowledgeItemDTO> callback) throws IllegalArgumentException;
	void insertKnowledgeAttempt(Long id, Integer score, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
}
